import { _decorator, Component, Node } from 'cc';
import { loadCommonPreFab, showErrorTip } from '../../tools/PopuUp';
import { MultiMsgMgr } from './MultiMsgMgr';
import { find } from 'cc';
import { App } from '../../App';
import { tween } from 'cc';
import UtilTool from '../../tools/UtilTool';
const { ccclass, property } = _decorator;

export class MultiCommon {

    // 进入房间， pwd为null时不需要密码
    static enterRoom(roomType, roomId, pwd : string = null, cb : Function = null) {
        
        pwd = pwd || ""

        MultiMsgMgr.getInstance().sendGetRoomJoinInfo(roomType, roomId, pwd)
        .then(async (data)=>{
            UtilTool.printLog("房间加入信息", data)

            // 错误码 0正常 1004?金币不够 1006房间类型错误 1009人数已满 1010房间不存在 1011进入房间密码错误

            // TODO 断线重连？ 解散房间 房主创建房间后是否默认参赛
            if(data.result == 0) {
                this.showRoomJoinLayer(data, roomType)
            } else {
                console.error("进入房间失败", data.result)
                showErrorTip(data.result)
            }
            
            cb && cb(data)
        })
        
    }


    /**
     * 显示房间加入界面
     * @param data 
     * @param roomType 0 普通场 1 专业场
     * @param isFromGame 是否是游戏进来
     * @param exitType 退出类型 0再次挑战 1正常退出, 这个是游戏进来时传过来的参数
     */
    static async showRoomJoinLayer(data, roomType, isFromGame=false, exitType=1) {
        let joinLayer = await loadCommonPreFab("prefabs/hall/multiplay/RoomJoinLayer")
        // @ts-ignore
        joinLayer.getComponent("RoomJoinLayer").initData(data, roomType, isFromGame, exitType)
    }

    // /**
    //  * 显示重连时房间加入界面
    //  * @param data 
    //  * @param roomType 0 普通场 1 专业场
    //  * @param isFromGame 是否是游戏进来
    //  * @param exitType 退出类型 0再次挑战 1正常退出, 这个是游戏进来时传过来的参数
    //  */
    // static async showReconnectRoomJoinLayer(reconectData) {

    //     let roomType = reconectData.roomType
    //     let isFromGame = App.Scene.curScene == "game3"
    //     let exitType = 1
    //     let data = reconectData.waitStatusInfo

    //     data.roomType = roomType
    //     data.houseOwnerAccount = reconectData.houseOwnerAccount
    //     data.roomId = reconectData.roomId
    //     data.gameType = reconectData.gameType

    //     // 检测是否存在房间加入界面
    //     let joinLayer = find("Canvas/RoomJoinLayer")
    //     if(!joinLayer) {
    //         joinLayer = await loadCommonPreFab("prefabs/hall/multiplay/RoomJoinLayer")
    //     }
        
    //     UtilTool.printLog("test showReconnectRoomJoinLayer", data, reconectData)
        
    //     // @ts-ignore
    //     joinLayer.getComponent("RoomJoinLayer").initReconnectData(data, roomType, isFromGame, exitType)

    // }

}
